Relative jump out of range by ...
Oglądasz archiwalną wersję wątku "Relative jump out of range by ..." z forum alt.pl.asm
BloB
Witam,
 mam b³±d w projekcie, pierwszy raz to na oczy widze. Co z tym zrobiæ ? :

Turbo Assembler  Version 4.1  Copyright (c) 1988, 1996 Borland International

Assembling file:   prog.asm
**Error** prog.asm(18) Relative jump out of range by 0175h bytes
**Error** prog.asm(40) Relative jump out of range by 014Fh bytes
**Error** prog.asm(110) Relative jump out of range by 0018h bytes
**Error** prog.asm(118) Relative jump out of range by 0009h bytes
**Error** prog.asm(122) Relative jump out of range by 0034h bytes
**Error** prog.asm(132) Relative jump out of range by 004Bh bytes
**Error** prog.asm(140) Relative jump out of range by 001Ch bytes
**Error** prog.asm(144) Relative jump out of range by 0067h bytes
**Error** prog.asm(214) Relative jump out of range by 0101h bytes
**Error** prog.asm(236) Relative jump out of range by 0142h bytes
Error messages:    10
Warning messages:  None
Passes:            1
Remaining memory:  442k

Program :

model small
data
   jeden db
201,205,205,205,205,205,205,205,205,205,205,205,205,187,13,10,186,'       $'
   ekran dw 12345
   dwa db
186,13,10,204,205,205,205,205,205,205,205,205,205,205,205,205,185,13,10,186­,218,196,191,218,196,191,218,196,191,218,196,191,186,13,10,186,179,'1',179,­179,'2',179,179,'3',179,179,'+',179,186,13,10,186,192,196,217,192,196,217,1­92,196,217,192,196,217,186,13,10,186,218,196,191,218,196,191,218,196,191,21­8,196,191,186,13,10,186,179,'4',179,179,'5',179,179,'6',179,179,'-',179,186­,13,10,186,192,196,217,192,196,217,192,196,217,192,196,217,186,13,10,186,21­8,196,191,218,196,191,218,196,191,218,196,191,186,13,10,186,179,'7',179,179­,'8',179,179,'9',179,179,'*',179,186,13,10,186,192,196,217,192,196,217,192,­196,217,192,196,217,186,13,10,186,218,196,191,218,196,191,218,196,191,218,1­96,191,186,13,10,186,179,'0',179,179,'
',179,179,'=',179,179,'/',179,186,13,10,186,192,196,217,192,196,217,192,196­,217,192,196,217,186,13,10,200,205,205,205,205,205,205,205,205,205,205,205,­205,188,'$'
   bladmyszy db 'mysz nie dziala$'
   jestpop db 0
   poprzednia dw 0
   jakiedzialanie db 0
code
   start:

    mov ds,dx
;==========================================================================
   xor ax,ax
   int 33h
   cmp ax,0
   je myszniedziala
   mov ax,1
   int 33h
   mov ax,6
   xor bx,bx
   int 33h
   mov ax,6
   mov bx,1
   int 33h
petlaglowna:
   jmp wypisz
dalej:
   mov ax,6
   xor bx,bx
   int 33h
   cmp bx,0
   jne sprawdzgdzie
powrot:
   mov ax,6
   mov bx,1
   int 33h
   cmp bx,0
   jne koniec
   jmp petlaglowna
;==========================================================================
wypisz:
   lea dx,jeden
   mov ah,9
   int 21h
   mov ax,ekran
   xor dx,dx
   mov cl,10
   xor ch,ch
   div cx
   push dx
   xor dx,dx
   mov cl,10
   xor ch,ch
   div cx
   push dx
   xor dx,dx
   mov cl,10
   xor ch,ch
   div cx
   push dx
   xor dx,dx
   mov cl,10
   xor ch,ch
   div cx
   push dx
   xor dx,dx
   mov cl,10
   xor ch,ch
   div cx
   push dx
   mov cx,5
petla:
   pop ax
   cmp al,0
   je zastapzero
   mov dl,al
   add dl,'0'
   jmp pozastapzero
zastapzero:
   mov dl,' '
pozastapzero:
   mov ah,2
   int 21h
   loop petla
   lea dx,dwa
   mov ah,9
   int 21h
   mov ah,01h;
   int 21h
   jmp dalej
;==========================================================================
sprawdzgdzie:
   shr dx,3
   shr cx,3
   cmp cx,0
   je powrot
   cmp cx,4
   jb pierwszakolumna
   cmp cx,7
   jb drugakolumna
   cmp cx,10
   jb trzeciakolumna
   cmp cx,13
   jb czwartakolumna
   jmp powrot
pierwszakolumna:
   cmp dx,3
   jb powrot
   cmp dx,6
   jb jedynka
   cmp dx,9
   jb czworka
   cmp dx,12
   jb siodemka
   cmp dx,15
   jb zero
   jmp powrot
drugakolumna:
   cmp dx,3
   jb powrot
   cmp dx,6
   jb dwojka
   cmp dx,9
   jb piatka
   cmp dx,12
   jb osemka
   jmp powrot
trzeciakolumna:
   cmp dx,3
   jb powrot
   cmp dx,6
   jb trojka
   cmp dx,9
   jb szostka
   cmp dx,12
   jb dziewiatka
   cmp dx,15
   jb rownasie
   jmp powrot
czwartakolumna:
   cmp dx,3
   jb powrot
   cmp dx,6
   jb dodawanie
   cmp dx,9
   jb odejmowanie
   cmp dx,12
   jb mnozenie
   cmp dx,15
   jb dzielenie
   jmp powrot
jedynka:
   mov bx,1
   jmp cyfra
dwojka:
   mov bx,2
   jmp cyfra
trojka:
   mov bx,3
   jmp cyfra
czworka:
   mov bx,4
   jmp cyfra
piatka:
   mov bx,5
   jmp cyfra
szostka:
   mov bx,6
   jmp cyfra
siodemka:
   mov bx,7
   jmp cyfra
osemka:
   mov bx,8
   jmp cyfra
dziewiatka:
   mov bx,9
   jmp cyfra
zero:
   mov bx,0
   jmp cyfra
cyfra:
   mov ax,ekran
   shr ax,1
   mov cx,ax
   shr cx,2
   add ax,cx
   add ax,bx
   mov ekran,ax
   jmp powrot
dodawanie:
   mov al,1
   jmp dzialanie
odejmowanie:
   mov al,2
   jmp dzialanie
mnozenie:
   mov al,3
   jmp dzialanie
dzielenie:
   mov al,4
   jmp dzialanie
dzialanie:
   mov jakiedzialanie,al
   mov ax,ekran
   mov poprzednia,ax
   mov ekran,0
   mov jestpop,1
   jmp powrot
rownasie:
   cmp jakiedzialanie,0
   je powrot
   mov bx,ekran
   mov ax,poprzednia  
   cmp jakiedzialanie,1
   jne mozeodejmowanie
   add ax,bx
   mov ekran,ax
   mov jestpop,0
mozeodejmowanie:
   cmp jakiedzialanie,2
   jne mozemnozenie
   sub ax,bx
   mov ekran,ax
   mov jestpop,0
mozemnozenie:
   cmp jakiedzialanie,3
   jne mozedzielenie
   mul bx
   mov ekran,ax
   mov jestpop,0
mozedzielenie:
   cmp jakiedzialanie,4
   jne powrot
   xor dx,dx
   div bx
   mov ekran,ax
   mov jestpop,0
   jmp powrot
;==========================================================================
myszniedziala:  
   lea dx,bladmyszy
   mov ah,9
   int 21h
   jmp koniec
;==========================================================================
koniec:    
    mov ah,4ch
    int 21h
   end start

Kicer

Witam,
 mam błąd w projekcie, pierwszy raz to na oczy widze. Co z tym zrobić ? :


(cut)
swego czasu gdy pisałem pod turbo asma tez tak miałem
bład polega na tym ze skoki typu jxxx (np jc, jnz) Tasm ogranicza do pewnej
wielkosci (nie mozna skoczyc dalej niz bodajrze +127 i -128 bajtów ) nie wiem
czy wtedy wynikało to z mojej niewiedzy czy tez moze tasm jest po prostu
ograniczony i nie wie ze moze uzyc tego typu skok na liczbach wiekszych
(wtedy  operand jest odpowiednio 2 lub 4 bajtowy) w kazdym badź razie uzywam
fasma który nie stwarza takich problemow.
na Twoim miejscu tez przeskoczyłbym na jakis lepszy kompilator bo tasm o ile
jest jaki nowszy niz ten któego uzywasz to napewno jest płatny a fasm czy
nasm jest darmowy i obsługuja wszelkie rodzaje procesorów i ich rozszerzen

pozdrawiam

Łukasz Gromanowski

Witam,
 mam błąd w projekcie, pierwszy raz to na oczy widze. Co z tym zrobić ? :

Turbo Assembler  Version 4.1  Copyright (c) 1988, 1996 Borland International

Assembling file:   prog.asm
**Error** prog.asm(18) Relative jump out of range by 0175h bytes


[...]

Cześć,
dyrektywa "JUMPS" powinna rozwiązać problem. Poza tym, lepiej się
przesiąść na FASM-a ( http://flatassembler.net ) tak jak radził Kicer
w poście obok.

Pozdrawiam
Łukasz

Tomek
Dnia 29-12-2005 o 21:39:49 Łukasz Gromanowski  

dyrektywa "JUMPS" powinna rozwiązać problem. Poza tym, lepiej się
przesiąść na FASM-a ( http://flatassembler.net ) tak jak radził Kicer
w poście obok.

Pozdrawiam
Łukasz


tak, użyj JUMPS i bedzie ok

Bernard

Witam,
 mam błąd w projekcie, pierwszy raz to na oczy widze. Co z tym zrobić ? :

Turbo Assembler  Version 4.1  Copyright (c) 1988, 1996 Borland International

Assembling file:   prog.asm
**Error** prog.asm(18) Relative jump out of range by 0175h bytes
**Error** prog.asm(40) Relative jump out of range by 014Fh bytes
**Error** prog.asm(110) Relative jump out of range by 0018h bytes


Poinformować asembler, że ma generować kod na procesor 386 lub nowszy,
umieszczając dyrektywę .386 za dyrektywą .model.

Używać "j(warunek) near etykieta".

BloB

Poinformować asembler, że ma generować kod na procesor 386 lub nowszy,
umieszczając dyrektywę .386 za dyrektywą .model.

Używać "j(warunek) near etykieta".


Dzięki, nie pomyślałem że to może mieć związek

marikaz

Assembling file:   prog.asm
**Error** prog.asm(18) Relative jump out of range by 0175h bytes
**Error** prog.asm(40) Relative jump out of range by 014Fh bytes
**Error** prog.asm(110) Relative jump out of range by 0018h bytes
**Error** prog.asm(118) Relative jump out of range by 0009h bytes
**Error** prog.asm(122) Relative jump out of range by 0034h bytes
**Error** prog.asm(132) Relative jump out of range by 004Bh bytes
**Error** prog.asm(140) Relative jump out of range by 001Ch bytes
**Error** prog.asm(144) Relative jump out of range by 0067h bytes
**Error** prog.asm(214) Relative jump out of range by 0101h bytes
**Error** prog.asm(236) Relative jump out of range by 0142h bytes
Error messages:    10


Ten caly bajzel zawdzieczasz temu, ze wlasnie 'relative jumps are
out of range'

Popelniles w programie skoki warunkowe ktore sa dluzsze niz przewiduje
utawa, hehe.
Ustawa przewiduje, ze skoki warunkowe moga sie odbywac:
w stecz 127b a prosto 128b (albo cos takiego)
Nigdy sie tym nie przejmowalem, bo cos piszac na wstepie
winszuje sobie:
JUMPS
I problem (prawie) z glowy.

marikaz

Nigdy sie tym nie przejmowalem, bo cos piszac na wstepie
winszuje sobie:
JUMPS


Powiem ci w tajemnicy co robi dyrektywa JUMPS.

Nic poza tym, ze przeksztalca skok warunkowy
w skok bezwarunkowy.

JUMPS robi tak:

jc etykieta

zamienia na

jmp etykieta

i mamy skok innej dlugosci.

(albo podobnie) Nie pamietam jakie etykiety tasm stosuje.

Kozycs taka ze koki moga byc dalsze.

Michał Sobczak

**Error** prog.asm(236) Relative jump out of range by 0142h bytes


Tu masz całkiem pokrętne (i przez niektórych wyśmiane) rozwiązanie podobnego
problemu.
http://cage.za.pl/line.asm

...
mov     ax, word [line_x2]
cmp     ax, word [line_x1]
jg      %%greater_x_delta
jng     %%not_greater_x_delta

%%greater_x_delta:
mov     word [line_delta_x], ax
sub     word [line_delta_x], bx ; line_delta_x = line_x2 - line_x1
jmp     %%check_y_delta

%%not_greater_x_delta:
mov     ax, word [line_x1]
mov     bx, word [line_x2]
mov     word [line_delta_x], ax
sub     word [line_delta_x], bx ; line_delta_x = line_x1 - line_x2
jmp     %%check_y_delta
...

??????
Żywy towar
Lamerski problem
  • grobelny pleszew
  • regeneracja prosba do ba
  • Jei9B6li jednak te strony
  • ile wyrabia sie dowod osobisty
  • mroi9BFek biblioteka internetowa
  • desarrollo
  • portos;rolety
  • Modelowanie i sterowanie mobilnych roboti9F3w
  • ghr 15v s
  • Zbieranina wiadomości z for dyskusyjnych : Start